
#include "ncurses.h"

void boucleNcurses()
{
	int nbrJ, nbrP, continuejeu, c, i, gCase;
	int niveau;

	/*Initialisation de la fênetre*/
	WINDOW *win = initscr();
	/*Initialisation CDK*/
	CDKSCREEN *cdkscreen = initCDKScreen(win);
	/*Initialisation des couleurs CDK*/
	initCDKColor();
	/*Initialisation des couleurs ncurses*/
	start_color();
	/*Curseur invisible*/
	curs_set(0);
	/*Activation clavier*/
	keypad(win, TRUE);
	/*Empêche l'affichage des caractères tapés au clavier*/
	noecho();

	/*Couleur du pion*/
	init_pair(1, COLOR_GREEN, COLOR_BLACK);
	init_pair(2, COLOR_YELLOW, COLOR_BLACK);
	init_pair(3, COLOR_BLUE, COLOR_BLACK);
	/*Couleur du plateau*/
	init_pair(5, COLOR_WHITE, COLOR_BLACK);
	init_pair(4, COLOR_RED, COLOR_BLACK);
	/*Couleur Titre et Score*/
	init_pair(6, COLOR_CYAN, COLOR_BLACK);

	refresh();
	nbrJ = affMenu(cdkscreen);
	nbrP = affMenuPlat(cdkscreen);

	/*Initialise le jeu et ses modules, et repartit les questions sur les cases*/
	Jeu *jeu = creerJeu(nbrJ, nbrP);
	clear();

	/*continuejeu reste à 1 tant que le/les joueur(s) n'ont pas appuyé sur echap ou gagné*/
	refresh();
	continuejeu = 1;
	mvprintw(4,1,"Vous etes %d joueurs, appuyez sur une touche pour commencer",nbrJ);
	affScore(jeu);
	getch();
	do
	{
		for(i=0;i<jeu->nbrJ;i++)
		{
			if(continuejeu == 1)
			{
			    niveau = jeu->jou[i]->niveauJoueur;
				if(get_etat(jeu->jou[i]) == 1)
				{
					attron(COLOR_PAIR(i+1));
					clear();
                    mvprintw(6,1,"(touche ECHAP pour quitter)");
					mvprintw(2,1,"A vous joueur %d", i+1);
					mvprintw(3,1,"Apppuyer sur la touche D pour lancer le dès");
					affScore(jeu);

					/*Si le joueur a une carte bonus pour lancer deux dés*/
					c = testDeuxDes(cdkscreen, jeu, i);

					continuejeu = verifQuitterPartie(cdkscreen,c);

                    if(continuejeu == 1)
                    {
                        joueurUnTour(jeu);
                        gCase = getGenreCase (get_case(jeu->plateaux[niveau],getPosition(jeu->jou[i])));

                        clear();
                        affScore(jeu);

                        attron(COLOR_PAIR(i+1));
                        mvprintw(3,1,"Vous avez fait %d",jeu->des->val);
                        switch(gCase)
                        {
                            case 0:
                                affQuestion(cdkscreen,jeu,getPosition(jeu->jou[i]),i);
                                break;
                            case 1:
                                affCarte(cdkscreen,jeu,i);
                                break;
                            case 2:
                                affBonus(cdkscreen,jeu,i);
                                break;
                            case 3:
                                continuejeu = affBilan(jeu,i);
                                break;
                        }
					}
				}
				else
				{
					attron(COLOR_PAIR(i+1));
					wclear(win);
					mvprintw(2,1,"Joueur %d", i+1);
					mvprintw(3,1,"Passe ton tour!!");
					set_etat(jeu->jou[i],1);
					affScore(jeu);
					getch();
				}
			}
			joueurSuivant(jeu);
		}
	}while(continuejeu == 1);

	detruitJeu(&jeu);

	wrefresh(win);
	destroyCDKScreen(cdkscreen);
	endCDK();
	delwin(win);
	endwin();
}

int affBilan(Jeu * jeu, const int numJ)
{
	bool finjeu = bilanJoueur(jeu);
	if(finjeu == true)
	{
		attron(COLOR_PAIR(numJ+1));
		mvprintw(5,1,"FELICITATION!! JOUEUR %d A GAGNE!!",numJ+1);
		refresh();
		getch();
		return 0;
	}
	else
	{
		attron(COLOR_PAIR(numJ+1));
		mvprintw(5,1,"Joueur %d, le jeu n'est pas encore fini, recommence!!",numJ+1);
		refresh();
		getch();
		return 1;
	}
}

void affBonus(CDKSCREEN * cdkscreen, Jeu * jeu, const int numJ)
{
    int jouAct = jeu->joueurActu;
    int niveau = jeu->jou[jouAct]->niveauJoueur;
	/*Initialisation des variables*/
    Carte * C;
	char *carte[3];

    if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 9)
    {
        mvprintw(4,1,"Vous etes au RU");
        C = retourneTetePioche(jeu->bonusRU);
    }
    else if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 15)
    {
        mvprintw(4,1,"Vous etes a la BU");
        C = retourneTetePioche(jeu->bonusBU);
    }
    else if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 21)
    {
        mvprintw(4,1,"Vous etes au Cyber");
        C = retourneTetePioche(jeu->bonusCYBER);
    }
    else
    {
        mvprintw(4,1,"Vous etes un tricheur");
        C = retourneTetePioche(jeu->bonusTRICHE);
    }


	/*Initialisation CDK*/
	CDKLABEL *macarte;

	attron(COLOR_PAIR(numJ+1));
	/*mvprintw(4,1,"Vous etes %s", emplacement);*/
	mvprintw(5,1,"Appuyez sur une touche pour voir les conséquences...");
	refresh();
	getch();
	clear();

	carte[0] = (char*)malloc(64*sizeof(char));
	sprintf(carte[0], "<C></B>%s<!B>", getNomCarte(C));
	carte[1] = " ";
	carte[2] = (char*)malloc(128*sizeof(char));
	sprintf(carte[2], "<C>%s", getDefinitionCarte(C));

	/*Affichage carte*/
	macarte = newCDKLabel(cdkscreen,LEFT,BOTTOM,carte,3,TRUE,FALSE);
	refreshCDKScreen (cdkscreen);
	affScore(jeu);
	getch();

	consequenceCarteJoueur(C,jeu->jou[numJ]);

    if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 9)
        defilerRenfilerCarte(jeu->bonusRU);
    else if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 15)
        defilerRenfilerCarte(jeu->bonusBU);
    else if(getPositionCase(get_case(jeu->plateaux[niveau],getPosition(jeu->jou[jouAct]))) == 21)
        defilerRenfilerCarte(jeu->bonusCYBER);
    else
        defilerRenfilerCarte(jeu->bonusTRICHE);

    C = NULL;

	destroyCDKLabel(macarte);
	free(carte[0]);
	free(carte[2]);
}

void affCarte(CDKSCREEN * cdkscreen, Jeu * jeu, const int numJ)
{
	/*Initialisation des variables*/
	char *carte[3];

	/*Initialisation CDK*/
	CDKLABEL *macarte;

	/*Recupération de la carte*/
	Carte *c = retourneTetePioche(jeu->pioche);
	defilerRenfilerCarte(jeu->pioche);

	carte[0] = (char*)malloc(64*sizeof(char));
	sprintf(carte[0], "<C></B>%s<!B>", getNomCarte(c));
	carte[1] = " ";
	carte[2] = (char*)malloc(128*sizeof(char));
	sprintf(carte[2], "<C>%s", getDefinitionCarte(c));

	attron(COLOR_PAIR(numJ+1));
	mvprintw(4,1,"Vous etes sur une case pioche");
	mvprintw(5,1,"Appuyez sur une touche pour afficher la carte...");
	refresh();
	getch();
	clear();

	/*Affichage carte*/
	macarte = newCDKLabel(cdkscreen,LEFT,BOTTOM,carte,3,TRUE,FALSE);
	refreshCDKScreen (cdkscreen);
	affScore(jeu);
	getch();

	destroyCDKLabel(macarte);

	consequenceCarteJoueur(c,jeu->jou[numJ]);
	/*S'il avance ou recule sur une case type question, elle s'affiche*/
	if(getGenreCase (get_case(jeu->plateaux[jeu->jou[numJ]->niveauJoueur],getPosition(jeu->jou[numJ]))) == 0)
	{
		affScore(jeu);
		affQuestion(cdkscreen,jeu,getPosition(jeu->jou[numJ]),numJ);
	}
	free(carte[0]);
	free(carte[2]);
	c = NULL;
}

void repQuestion(CDKSCREEN *cdkscreen, Jeu * jeu, const int numC, const int numJ)
{
	/*Initialisation des variables*/
	int niv = jeu->jou[numJ]->niveauJoueur;
	int choix, i, compteur;
	int nbrB = 0;
        for(i=0;i<jeu->jou[numJ]->nbMainJoueur;i++)
        {
            if(getGenreCarte(jeu->jou[numJ]->mainJoueur[i]) == 6)
                nbrB++;
        }

	char comp[64];
	char *list[4+nbrB];
	char *bonus[2];

	char *quest2 = (char*)malloc(64*sizeof(char));
	char *quest = (char*)malloc(64*sizeof(char));

	Question *question = getActionCase(get_case(jeu->plateaux[niv],numC));

	strcpy(quest,getQuest(question));

	/*Initialisation CDK*/
	CDKSCROLL *liste;
	CDKLABEL *monlabel;

	/*Recupération de la Question/Réponses*/
	for(i=0;i<4;i++)
        list[i] = getRep(question->tabRep[i]);


	sprintf(quest2, "<I=5>%s", quest);

	attron(COLOR_PAIR(numJ+1));
	mvprintw(4,1,"Vous etes sur une case exam");
	mvprintw(5,1,"Appuyez sur une touche pour afficher la question...");
	affScore(jeu);
	getch();
	clear();

	/*Affiche bonus*/
	if(nbrB > 0)
	{
		bonus[0] = "Vous pouvez choisir un bonus";
		bonus[1] = "  (cf. sous les réponses)   ";
		monlabel = newCDKLabel(cdkscreen,RIGHT,BOTTOM,bonus,2,TRUE,FALSE);
		compteur = 0;
		for(i=0;i<jeu->jou[numJ]->nbMainJoueur;i++)
		{
			if(getGenreCarte(jeu->jou[numJ]->mainJoueur[i]) == 6)
            {
                list[4+compteur] = getNomCarte(jeu->jou[numJ]->mainJoueur[i]);
				compteur++;
			}
        }
	}
	/*Affichage choix réponse (et bonus)*/
	liste = newCDKScroll (cdkscreen,CENTER,CENTER,RIGHT,8+nbrB,50,quest2,list,4+nbrB,FALSE,A_REVERSE,TRUE,TRUE);
	refreshCDKScreen (cdkscreen);
	affScore(jeu);

	while(liste->exitType != vNORMAL)
	{
		choix = activateCDKScroll (liste, 0);
	}
	/*On recopie la réponse sélectionnée*/
	strcpy(comp,list[choix]);

	if(choix < 4)
	{
		/*On la compare à la réponse juste, si c'est la même, on rajoute un point au joueur*/
		if(strcmp(comp,getRepJuste(question)) == 0)
		{
			choix = getScore(jeu->jou[numJ]);
			choix++;
			setScore(jeu->jou[numJ],choix);
			setValideCase(get_case(jeu->plateaux[niv],numC), numJ, 1);
		}
	}
	else
	{
        for(i=0;i<jeu->jou[numJ]->nbMainJoueur;i++)
        {
            if(strcmp(jeu->jou[numJ]->mainJoueur[i]->nom, comp) == 0);
                choix = i;
        }

		enleverCarteMain(jeu->jou[numJ], choix);
		choix = getScore(jeu->jou[numJ]);
		choix++;
		setScore(jeu->jou[numJ],choix);
	}

	destroyCDKLabel (monlabel);
	destroyCDKScroll (liste);
	free(quest2);
	free(quest);
}

void affQuestion(CDKSCREEN *cdkscreen, Jeu * jeu, const int numC, const int numJ)
{
    int niv = jeu->jou[numJ]->niveauJoueur;
	/*Initialisation des variables*/

	bool rep = getValideCase (get_case(jeu->plateaux[niv],numC), numJ);
	if(rep == 0)
	{
		repQuestion(cdkscreen,jeu,numC,numJ);
	}
	else
	{
        int c;
		attron(COLOR_PAIR(numJ+1));
		mvprintw(3,1,"Vous etes sur une case exam");
		mvprintw(4,1,"Mais vous avez déjà validé cette question... Relance le dès");
		c = testDeuxDes(cdkscreen,jeu,numJ);
		printf("%d",c);
		joueurUnTour(jeu);
		refresh();
		clear();
		attron(COLOR_PAIR(numJ+1));
		mvprintw(4,1,"Vous avez fait %d, appuyez sur une touche...",jeu->des->val);
		affScore(jeu);
		getch();
	}
}

void affScore(const Jeu * jeu)
{
	/*Définitions des variables*/
	int i,col/*row*/;

	/*Récupération des dimensions du terminal*/
	getmaxyx(stdscr,i,col);

	affPlateau2();

	attron(COLOR_PAIR(6));
	mvprintw(1,col/2-12,"***STUDENT SURVIVOR***");
	mvprintw(1,col-12,"Score :");

	for(i=0;i<jeu->nbrJ;i++)
	{
		/*Affichage score du pion*/
		attron(COLOR_PAIR(i+1));
		mvprintw(2+i,col-15,"Joueur %d : %d",i+1,getScore(jeu->jou[i]));
		/*Affichage des pions*/
		affPion(i,getPosition(jeu->jou[i]));
		refresh();
	}

    mvprintw(7,col-12,"Plateau :");

	for(i=0;i<jeu->nbrJ;i++)
	{
		/*Affichage score du pion*/
		attron(COLOR_PAIR(i+1));
		mvprintw(8+i,col-15,"Joueur %d : %d/%d",i+1,getNiveau(jeu->jou[i])+1, jeu->nombrePlateaux);
		/*Affichage des pions*/
		affPion(i,getPosition(jeu->jou[i]));
		refresh();
	}
}

void affPlateau2()
{
	int row,col;
	/*Récupération des dimensions du terminal*/
	getmaxyx(stdscr,row,col);

	attron(COLOR_PAIR(5));
	mvprintw(row/2-9,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2-8,col/2-19,"|  D  |  1  |  2  |  3  |  4  |  5  |");
	mvprintw(row/2-7,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2-6,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2-5,col/2-19,"|  19 |  20 |  21 |  22 |  23 |  6  |");
	mvprintw(row/2-4,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2-3,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2-2,col/2-19,"|  18 |  31 |  32 |  33 |  24 |  7  |");
	mvprintw(row/2-1,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2+0,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2+1,col/2-19,"|  17 |  30 |Bilan|  34 |  25 |  8  |");
	mvprintw(row/2+2,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2+3,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2+4,col/2-19,"|  16 |  29 |  28 |  27 |  26 |  9  |");
	mvprintw(row/2+5,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2+6,col/2-19," ----- ----- ----- ----- ----- ----- ");
	mvprintw(row/2+7,col/2-19,"|  15 |  14 |  13 |  12 |  11 |  10 |");
	mvprintw(row/2+8,col/2-19,"|     |     |     |     |     |     |");
	mvprintw(row/2+9,col/2-19," ----- ----- ----- ----- ----- ----- ");
	attron(COLOR_PAIR(4));
	mvprintw(row/2-9,col/2-18,"----- ----- ----- ----- ----- -----");
	mvprintw(row/2-8,col/2-19,"|");mvprintw(row/2-8,col/2+17,"|");
	mvprintw(row/2-7,col/2-19,"|");mvprintw(row/2-7,col/2+17,"|");
	mvprintw(row/2-6,col/2-18,"----- ----- ----- ----- -----");
	mvprintw(row/2-5,col/2-19,"|");mvprintw(row/2-5,col/2+11,"|");mvprintw(row/2-5,col/2+17,"|");
	mvprintw(row/2-4,col/2-19,"|");mvprintw(row/2-4,col/2+11,"|");mvprintw(row/2-4,col/2+17,"|");
	mvprintw(row/2-3,col/2-12,"----- ----- -----");
	mvprintw(row/2-2,col/2-19,"|");mvprintw(row/2-2,col/2-13,"|");mvprintw(row/2-2,col/2+5,"|");
	mvprintw(row/2-2,col/2+11,"|");mvprintw(row/2-2,col/2+17,"|");
	mvprintw(row/2-1,col/2-19,"|");mvprintw(row/2-1,col/2-13,"|");mvprintw(row/2-1,col/2+5,"|");
	mvprintw(row/2-1,col/2+11,"|");mvprintw(row/2-1,col/2+17,"|");
	mvprintw(row/2,col/2-6,"-----");
	mvprintw(row/2+1,col/2-19,"|");mvprintw(row/2+1,col/2-13,"|");mvprintw(row/2+1,col/2-7,"|");
	mvprintw(row/2+1,col/2+5,"|");mvprintw(row/2+1,col/2+11,"|");mvprintw(row/2+1,col/2+17,"|");
	mvprintw(row/2+2,col/2-19,"|");mvprintw(row/2+2,col/2-13,"|");mvprintw(row/2+2,col/2-7,"|");
	mvprintw(row/2+2,col/2+5,"|");mvprintw(row/2+2,col/2+11,"|");mvprintw(row/2+2,col/2+17,"|");
	mvprintw(row/2+3,col/2-6,"----- -----");
	mvprintw(row/2+4,col/2-19,"|");mvprintw(row/2+4,col/2-13,"|");
	mvprintw(row/2+4,col/2+11,"|");mvprintw(row/2+4,col/2+17,"|");
	mvprintw(row/2+5,col/2-19,"|");mvprintw(row/2+5,col/2-13,"|");
	mvprintw(row/2+5,col/2+11,"|");mvprintw(row/2+5,col/2+17,"|");
	mvprintw(row/2+6,col/2-12,"----- ----- ----- -----");
	mvprintw(row/2+7,col/2-19,"|");mvprintw(row/2+7,col/2+17,"|");
	mvprintw(row/2+8,col/2-19,"|");mvprintw(row/2+8,col/2+17,"|");
	mvprintw(row/2+9,col/2-18,"----- ----- ----- ----- ----- -----");
}

void affPion(const int numJ, const int position)
{
	/*Définition des variables*/
 	int row,col,x,y;
	char *pion[3];

	/*Récupération des dimensions du terminal*/
	getmaxyx(stdscr,row,col);

	pion[0]= "A";
	pion[1]= "B";
	pion[2]= "C";

	/*Fonction coordonnées*/
	x = retCoordX(position);
	y = retCoordY(position);

	/*Affichage du pion*/
	mvprintw(row/2+x,col/2+y+1+numJ,"%s",pion[numJ]);
}

int retCoordX(const int position)
{
	if(position < 6)
	{
		return -7;
	}
	else if(position == 6 || (position > 18 && position < 24))
	{
		return -4;
	}
	else if(position == 7 || (position > 30 && position < 34) || position == 24 || position == 18)
	{
		return -1;
	}
	else if(position > 9 && position < 16)
	{
		return 8;
	}
	else if(position == 9 || (position > 25 && position < 30) || position == 16)
	{
		return 5;
	}
	else
		return 2;
}

int retCoordY(const int position)
{
	if(position == 0 || (position < 20 && position > 14))
	{
		return -18;
	}
	else if(position > 4 && position < 11)
	{
		return 12;
	}
	else if(position == 1 || position == 14 || position == 20 || (position < 32 && position > 28))
	{
		return -12;
	}
	else if(position == 4 || position == 11 || (position < 27 && position > 22))
	{
		return 6;
	}
	else if(position == 3 || position == 22 || position == 33 || position == 34 || position == 27 || position == 12)
	{
		return 0;
	}
	else
		return -6;
}

int affMenu(CDKSCREEN *cdkscreen)
{
	/*Initialisation des variables*/
	char *titre[1];
	char *list[] = {"1 joueur","2 joueurs","3 joueurs"};
	int choix;

	/*Initialisation CDK*/
	CDKLABEL *monlabel;
	CDKSCROLL *liste;

	/*Titre*/
	titre[0]= "</56>STUDENT SURVIVOR<!56>";

	/*Affichage titre*/
	monlabel = newCDKLabel(cdkscreen,CENTER,TOP,titre,1,TRUE,FALSE);

	/*Affichage choix nombre joueur*/
	liste = newCDKScroll (cdkscreen,CENTER,CENTER,RIGHT,5,30,"Bienvenue sur Student Survivor!!",list,3,FALSE,A_REVERSE,TRUE,FALSE);

	refreshCDKScreen (cdkscreen);

	while(liste->exitType != vNORMAL)
	{
		choix = activateCDKScroll (liste, 0);
	}

	destroyCDKLabel (monlabel);
	destroyCDKScroll (liste);

	/*Renvoie le nombre de joueur*/
	return choix+1;
}
int affMenuPlat(CDKSCREEN *cdkscreen)
{
	/*Initialisation des variables*/
	char *titre[1];
	char *list[] = {"1 plateau","2 plateaux"};
	int choix;

	/*Initialisation CDK*/
	CDKLABEL *monlabel;
	CDKSCROLL *liste;

	/*Titre*/
	titre[0]= "</56>STUDENT SURVIVOR<!56>";

	/*Affichage titre*/
	monlabel = newCDKLabel(cdkscreen,CENTER,TOP,titre,1,TRUE,FALSE);

	/*Affichage choix nombre plateau*/
	liste = newCDKScroll (cdkscreen,CENTER,CENTER,RIGHT,4,30,"Bienvenue sur Student Survivor!!",list,2,FALSE,A_REVERSE,TRUE,FALSE);

	refreshCDKScreen (cdkscreen);

	while(liste->exitType != vNORMAL)
	{
		choix = activateCDKScroll (liste, 0);
	}

	destroyCDKLabel (monlabel);
	destroyCDKScroll (liste);

	/*Renvoie le nombre de joueur*/
	return choix+1;
}

int testDeuxDes(CDKSCREEN * cdkscreen, Jeu * jeu, const int numJ)
{
	int i, c, posC;
	posC = 42;

    for(i=0;i<jeu->jou[numJ]->nbMainJoueur;i++)
    {
        if(strcmp(jeu->jou[numJ]->mainJoueur[i]->nom, "Sandwich") == 0);
            posC = i;
    }

	if(posC != 42)
	{
		mvprintw(4,1,"Tu peux lancer deux dés");
		mvprintw(5,1,"Appuie sur B pour utiliser ton bonus");
		affScore(jeu);
		do
		{
			c = getch();
		}
		while(c != 'd' && c != 'b' && c != 27);
		if(c == 'b')
		{
			joueurUnTour(jeu);
			clear();
			affScore(jeu);
			attron(COLOR_PAIR(numJ+1));
			mvprintw(3,1,"Vous avez fait %d... Place au second lancé",jeu->des->val);

            enleverCarteMain(jeu->jou[numJ], posC);

			c = getch();
			}
		}
		else
		{
			affScore(jeu);
			do
			{
				c = getch();
			}
			while(c != 'd' && c != 27);
		}
		return c;
}

int verifQuitterPartie(CDKSCREEN *cdkscreen, const char c)
{
	if(c == 27)
	{

		/*Initialisation CDK*/
		CDKLABEL *monlabel;
		char *areYouSure[1];
		int c;

		/*wclear(win);*/
		areYouSure[0] = "ETES-VOUS SUR DE VOULOIR QUITTER? (y) ou (n)";

		/*Affichage titre*/
		monlabel = newCDKLabel(cdkscreen,CENTER,CENTER,areYouSure,1,TRUE,TRUE);

		refreshCDKScreen (cdkscreen);

		c = getch();
		while(c != 'y' && c != 'n')
			c = getch();
		if(c == 'n')
		{
			destroyCDKLabel (monlabel);
			return 1;
		}
		else
		{
			destroyCDKLabel (monlabel);
			return 0;
		}
	}
	else return 1;
}
